/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Ventas.Controlador;

import CharliesCookies.MainController;
import com.dp1.pucp.Modelo.Clases.Moneda;
import com.dp1.pucp.Ventas.DAO.PrecioDAO;
import com.dp1.pucp.Ventas.VIsta.PrecioGUI;
import com.dp1.pucp.Modelo.Clases.Precio;
import com.dp1.pucp.Modelo.Clases.Tipoproducto;
import com.dp1.pucp.Seguridad.DAO.LogDAO;
import com.dp1.pucp.Util.Validaciones;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;
/**
 *
 * @author ubuntu64
 */
public class PrecioControlador {
    private PrecioDAO dao;
    private PrecioGUI precioGUI;
    private Precio precio;
    
    
    public PrecioControlador(PrecioDAO dao, PrecioGUI vista, Precio precio){
        this.dao = dao;
        this.precioGUI = vista;
        this.precio = precio;
        
        precioGUI.llenaComboMoneda(this.dao.listarMonedas());
        precioGUI.llenaComboProducto(this.dao.listarProductos());
        
        precioGUI.addGuardarListener(new guardarPrecioListener());
        precioGUI.addCancelarListener(new cancelarListener());
        precioGUI.addLimpiarListener(new limpiarListener());
        
        precioGUI.setFormulario(precio);
    }
    
    
    class guardarPrecioListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e){
            boolean esnuevo=true;
            
            Precio p = new Precio();
            
            Tipoproducto tp = precioGUI.getproducto(); boolean flagTp = false;
            Moneda m = precioGUI.getMoneda(); boolean flagMoneda = false;
            Float precio1 = precioGUI.getPrecio(); boolean flagPrecio = false;
            Date fechainicio = precioGUI.getFechainicio(); boolean flagFechainicio = false;
            Date fechafin = precioGUI.getFechafin(); boolean flagFechafin = false;
            
            if (tp==null) flagTp = true;
            if (m==null) flagMoneda = true;
            if (precio1==0) flagPrecio = true;
            if (fechainicio==null) flagFechainicio = true;
            if (fechafin == null) flagFechafin = true;
            
            if (flagFechainicio||flagFechafin||flagMoneda||flagTp||flagPrecio){
                Validaciones.mostrarMensajeErrorVal("Debe llenar todos los campos correctamente.");
                return;
            }
            
            p.setTipoproducto(tp);
            p.setMoneda(m);
            p.setPrecio(precio1);
            p.setFechainicio(fechainicio);
            p.setFechafin(fechafin);
            
            if (precio != null){
                p.setIdprecio(precio.getIdprecio());
               esnuevo=false;
            }
            ArrayList<Precio> listaPrecio = dao.listarPrecios(0); //activo
            
            if (esnuevo){
            for (int i=0; i<listaPrecio.size(); i++){
                int cod = listaPrecio.get(i).getTipoproducto().getIdtipoproducto();
                int cod2 = tp.getIdtipoproducto();
                if (cod==cod2){
                    Validaciones.mostrarMensajeErrorVal("El producto ya tiene un precio registrado. Si deses modificarlo salga de la ventana actual y seleccione 'Editar'"); 
                    return;
                }   
            }
            }
            dao.guardarPrecio(p);
            LogDAO.insertarLog(MainController.usuario, "Agregar Precio");
            Validaciones.mostrarMensajeAvisoVal("El precio ha sido registrado correctamente.");
               
           precioGUI.dispose();

        
        
        }
        }
    
    
    class cancelarListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e){
            precioGUI.dispose();
             if (precio!=null)
                LogDAO.insertarLog(MainController.usuario, "Salir Editar Precio");
            else
                LogDAO.insertarLog(MainController.usuario, "Salir Agregar Precio");
        }
    }
    
    
    class limpiarListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e){
            precioGUI.limpiarDatos();
        }
    }
}
